package com.dragon.modules.yuegou.enums.code;

import com.dragon.common.constant.enums.IBusinessCode;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * 全局业务状态码
 * 
 * @author liuwu
 *
 */
public enum BusinessCode implements IBusinessCode {

	/**
	 * 支付：账户余额不够
	 */
	LACK_OF_MONEY(11002, "账户余额不够"),
	/**
	 * 支付：两次密码不一致
	 */
	PASSWORDS_ARE_INCONSISTENT(11003, "两次密码不一致"),
	/**
	 * 密码不正确
	 * */
	PASSWORD_IS_INCORRECT(11004,"密码不正确"),
	/**
	 * 该角色名已存在
	 * */
	ROLE_NAME_EXISTS(11005,"该角色名已存在"),
	/**
	 * 集团名已存在
	 * */
	GROUP_NAME_EXISTS(11006,"集团名已存在"),
	/**
	 * 商圈名已存在
	 * */
	DISTRICT_NAME_EXISTS(11007,"商圈名已存在"),
	/**
	 * 单位名不能重复
	 * */
	UNIT_NAME_EXISTS(11008,"单位名不能重复"),

	/**
	 * 重复关注
	 **/
	FRIEND_IS_FOLLOW(18501,"已经关注此会员请勿重复关注"),
	
	/**
	 * 尚未关注
	 **/
	FRIEND_IS_UNFOLLOW(18502,"已经尚未关注此会员"),
	
	/**
	 * 纳税人识别号不能重复
	 * */
	TAXPAYER_NAME_EXISTS(11009,"纳税人识别号不能重复"),
	/**
	 * 手机号重复
	 * */
	MOBLIE_NAME_EXISTS(11010,"该手机号已经是企业员工"),
	/**
	 * 单位不存在
	 * */
	COMPANY_NOT_EXIST(11011,"单位不存在"),
	/**
	 * 仪表名称已存在
	 * */
	INSTRUMENT_NAME_EXIST(11012,"仪表名称已存在"),
	/**
	 * 仪表物理编号已存在
	 * */
	PHYSICAL_NUMBER_EXIST(11013,"仪表物理编号已存在"),
	/**
	 * 该仪表没有绑定户号
	 * */
	NOT_BINDING_DOORON(11014,"该仪表没有绑定户号"),
	/**
	 * 楼栋名称不能重复
	 * */
	BUILDING_CANNOT_REPEATED(11015,"楼栋名称不能重复"),
	/**
	 * 楼层名称不能重复
	 * */
	FLOOR_CANNOT_REPEATED(11016,"楼层名称不能重复"),
	/**
	 * 房间名称不能重复
	 * */
	ROOM_CANNOT_REPEATED(11017,"房间名称不能重复"),
	/**
	 * 分组名称不能重复
	 * */
	GROUP_CANNOT_REPEATED(11018,"分组名称不能重复"),
	/**
	 * 本次抄表示数必须大于上次抄表示数于当前时间
	 * */
	MUST_GREATE_LAST_NUMBER(11019,"%s本次抄表示数必须大于上次抄表示数小于当前时间"),
	/**
	 * 该条抄表记录不是最新记录
	 * */
	RECORD_NOT_LATEST(11020,"该条抄表记录不是最新记录"),
	/**
	 * 仪表编号或物理编号不存在
	 * */
	PHYSICAL_NUMBER_NOTEXIST(11021,"%s仪表编号或物理编号不存在"),
	/**
	 * 仪表信息和房间信息不匹配
	 * */
	METER_AND_ROOM_NOT_MATCH(11022,"%s仪表信息和房间信息不匹配"),
	/**
	 * 预警模板名称不能重复
	 * */
	WARNING_CANNOT_REPEATED(11023,"预警模板名称不能重复"),
	/**
	 * 退费金额不能大于余额
	 * */
	REFUND_CANNOT_EXCEED_BALANCE(11024,"退费金额不能大于余额"),
	/**
	 * 存在记录已开过凭证，请重新选择
	 * */
	HAS_CERT(11025, "存在记录已经开过凭证，请重新选择"),
	/**
	 * 商品类别名已存在
	 * */
	PRODUCT_NAME_ALREADY_EXISTS(11026, "商品类别名已存在"),
	/**
	 * 商品类别下有子类别不能删除
	 * */
	PRODUCT_CATEGORY_UNDER_NODELETE(11027, "该类型下有子类型,不能删除"),
	/**
	 * 商品类别绑定了商品不能删除
	 * */
	PRODUCT_BOUND_SPU_NODELETE(11028, "已有商品使用该类型,不能删除"),
	/**
	 * 商品属性名称不能重复
	 * */
	ATTRIBUTE_NAME_NOREPEATED(11029, "商品属性名称不能重复"),
	/**
	 * 商品名称不能重复
	 * */
	PRODUCT_NAME_NOREPEATED(11030, "同一商圈内商品名称不能重复"),
	/**
	 * 商户没有钱包
	 * */
	MERCHANT_NO_WALLET(11031, "该商户没有钱包"),
	/**
	 * 没有找到该助力活动
	 * */
	HELP_MEMBER_REF_NOT_FIND(11032, "没有找到该助力活动"),
	/**
	 * 自己不能助力自己
	 * */
	HELP_MEMBER_REF_CANNOT_HELP_SELF(11033, "自己不能助力自己"),
	/**
	 * 助力过该活动
	 * */
	HELP_MEMBER_REF_ED(11034, "已经助力过该活动"),

	/**
	 * 活动已经结束或者已经完成
	 * */
	HELP_MEMBER_REF_IS_OVER(11035, "活动已经结束或者已经完成"),
    /**
     * 已达最大助力人数上限
     * */
    HELP_MEMBER_REF_MAX_PEOPLE_LIMIT(11036, "已达最大助力人数上限"),
    /**
     * 已达最大助力值上限
     * */
    HELP_MEMBER_REF_MAX_VALUE_LIMIT(11037, "已达最大助力值上限"),
	/**
	 * 二维码生成失败
	 * */
	QRCODE_GENERATE_FAILURE(11038, "二维码生成失败"),
	/**
	 * 商圈id不能为空
	 * */
	BUSDID_NOTNULL(11039,"商圈id不能为空"),
	/**
	 * 助力的底价大于或等于商品价格
	 * */
	HELP_MEMBER_REF_DIFF_VALUE_ERROR(11040, "助力的底价大于或等于商品价格"),
	/**
	 * 该活动24小时内不能重复发起
	 * */
	HELP_ACTIVITY_REPEAT_IN_24HOUR(11041,"该活动24小时内不能重复发起"),
	/**
	 * 该活动超过24小时，已失效
	 * */
	HELP_ACTIVITY_OVER_24HOUR_FAIL(11042,"该活动已过期或发起超过24小时"),
	/**
	 * 生成海报出现问题
	 * */
	HELP_ACTIVITY_OPERTERS_FAIL(11043,"生成海报出现问题"),
	/**
	 * 您来晚了，该助力活动已过期
	 * */
	HELP_ACTIVITY_IS_END(11044,"您来晚了，该助力活动已结束"),
	/**
	 * 您来晚了，该助力活动已过期
	 * */
	HELP_ACTIVITY_SURPLUS_END(11045,"库存不足，无法发起助力"),
	/**
	 * 本商品限购%s次
	 * */
	HELP_MAX_BUY_LIMIT(11046,"超过本商品最大限购次数"),
	/**
	 * 手机号格式不正确
	 * */
	PHONE_WRONG_FORMAT(11047,"手机号格式不正确"),
	/**
	 * 商圈添加失败，集团未设置许可信息
	 * */
	DISTRICT_ERRO_GROUP(11048,"商圈添加失败，集团未设置许可信息"),

	SYS_CUSTOM(11049, "解析XML字符串不能为空"),

	ORIGINALID_NOT_FOUND(11050, "初始化数据异常，原始ID未找到"),
	
	UNABLE_TO_MODIFY(11051, "此记录已经修改过一次，无法再次修改！"),
	
	BOUDS_GROUP_SUM(11052, "该集团下的商圈数量不能超出集团限制商圈数量上限"),

	HELP_ACTIVITY_NO_START(11053, "该主力活动尚未开始"),
	
	IMPORT_INSTRUMENT_NAME_EXIST(11054,"%s仪表名称已存在"),
	
	IMPORT_PHYSICAL_NUMBER_EXIST(11055,"%s仪表物理编号已存在"),
	
	IMPORT_PHYSICALNO_IS_NOT_NULL(11056,"%s仪表物理编号不能为空"),
	
	INTELLIGENT_RECORD_IS_NOT_MIDIFY(11057,"智能仪表无法修改抄示数"),
	
	DAYS_EXCEED_STANDARD(11058,"导出区间不能大于30天"),
	
	TIME_RANGE_CANNOT_BE_EMPTY(11059,"请选择时间范围进行导出！"),
	
	ROOM_AREA_NOT_SMALLER_ZERO(11060,"房间面积不能为0或者小于0"),
	
	AREA_NOT_SMALLER_ZERO(11061,"%s房间面积不能为0或者小于0"),
	
	BUILDING_NO_IS_NOT_NULL(11062,"楼栋编号不能为空"),
	
   FLOOR_NO_IS_NOT_NULL(11063,"楼层编号不能为空"),
	
	ROOM_NO_IS_NOT_NULL(11064,"房间编号不能为空"),
	
	IMPORT_NO_OUT_OF_BOUNDS(11065,"%s编号长度不能超过4位"),
	
	IMPORT_FLOOR_NO_IS_NOT_NULL(11066,"%s楼层编号不能为空"),
	
	IMPORT_ROOM_NO_IS_NOT_NULL(11067,"%s房间编号不能为空"),
	
	NO_OUT_OF_BOUNDS(11068,"%s编号长度不能超过4位"),
	
	BUILDING_NO_CANNOT_REPEATED(11069,"楼栋编号不能重复"),
	
	FLOOR_NO_CANNOT_REPEATED(11070,"楼层编号不能重复"),
	
	ROOM_NO_CANNOT_REPEATED(11071,"房间编号不能重复"),
	
	IMPORT_BUILDING_NO_CANNOT_REPEATED(11072,"%s楼栋编号不能重复"),
	
	IMPORT_FLOOR_NO_CANNOT_REPEATED(11073,"%s楼层编号不能重复"),
	
	IMPORT_ROOM_NO_CANNOT_REPEATED(11074,"%s房间编号不能重复"),
	
	STATUSTUCS_TYPE_INCOMING_ERROR(11075,"统计类型传入错误"),
	
	BUILDING_NAME_IS_NOT_BULL(11076,"楼栋名称不能为空"),
	
	EXCEL_IS_ERROR(11077,"请导入正确的数据表！"),

	APPID_OR_SECRET_ERROR(11078,"appid或者秘钥错误"),

	VIP_OF_THIS_LEVEL_CANNOT_BE_PURCHASED(11088,"无法购买该等级VIP！"),
	
	NO_YOURSELF(11089,"不能关注自己"),
	
	/**
	 * 该商圈下没有此楼栋信息
	 * */
	THERE_IS_NO_FLOOR_IN_THE_BUSD(11090,"该商圈下没有此楼栋信息"),
	
	THIS_PAGE_IS_NOT_CONFIGURED_IN_THE_CURRENT_BUSINESS_DISTRICT(11091,"当前商圈没有该页面配置"),
	
	THIS_PAGE_HAS_BEEN_CONFIGURED_IN_THE_CURRENT_BUSINESS_DISTRICT(11092,"当前商圈已有该页面配置,无法重复添加"),
	
	ALI_BIZ_NO_PREFIX(11093,"卡号前缀不能重复"),

	ALI_CONFIG_ERR(11094,"未配置商圈支付信息！"),

	MEMBER_PLATFORM_IS_NULL(11095,"会员卡未选择应用平台！"),

	MEMBER_CARD_LENGTH_ERROR(11096,"会员卡卡号前缀长度为3-10位"),

	MEMBER_TEMPLATE_SET_IMG_NULL(11097,"必须上传logo和背景图"),

	MEMBER_TEMPLATE_PRETEND_MEMBER_RIGHTS_IS_NULL(11098,"会员权益说明或者会员权益图片必须至少输入一项"),

	MEMBER_TEMPLATE_GRADE_PARAM_TIMESIZE_OVERSIZE(11099,"超出时间范围，年份需小于等于3，月份需小于等于36，天数小于等于1098"),

	BUS_MEMBER_BENEFITS_NOT_SET(11100,"当前商圈未配置会员权益"),

	MEMEBER_GRADE_ORIGIN_MUST_HAVE_ONE(11101,"会员等级必须设置有且只有一条初始等级记录"),

	MEMEBER_GRADE_NAME_IS_NULL(11102,"会员等级名称不能为空"),

	MEMEBER_GRADE_RULE_IS_NULL(11103,"请选择会员等级规则"),

	MEMEBER_TEMPLATE_SET_ID_IS_NULL(11104,"会员卡设置id不能为空"),

	MEMEBER_TEMPLATE_GRADE_ID_IS_NULL(11105,"会员卡等级id不能为空"),

	BUS_GROUP_SERVICE_ID_IS_NULL(11109,"商圈服务ID不能为空"),

	MEMEBER_TEMPLATE_GRADE_PARAMS_ID_IS_NULL(11107,"会员等级条件参数:前端页面设置id不能为空"),
	FREEDETAIL_IS_NULL(11092,"优免信息不能为空"),
	ALI_CONFIG_OPN_ERR(11108,"商圈未开通支付宝！"),
	SYSTEM_ERROR_MSG(22222,"%s");
	
	private final Integer code;

	private final String message;

	private BusinessCode(Integer code, String message) {
		this.code = code;
		this.message = message;
	}

	public Integer getCode() {
		return code;
	}

	public String getMessage() {
		return message;
	}

	/**
	 * 把code转化为ResponseCode枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	public static BusinessCode from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for ResponseCode
	 */
	private static final Map<Integer, BusinessCode> CODE_MAP = Stream.of(BusinessCode.values())
			.collect(Collectors.toMap(BusinessCode::getCode, e -> e));

}
